/*
 * types.h
 *
 *  Created on: 01/06/2011
 *      Author: Jonatas Lopes de Paiva
 *
 *  Define as estruturas utilizadas no trabalho.
 *  Basicamente as estruturas do grafo.
 */

#ifndef TYPES_H_
#define TYPES_H_

struct ArestaStruct;
struct VerticeStruct;
struct GrafoStruct;

/*
 * A estrutura Aresta contem um ponteiro para o Vertice original.
 * E utilizado para facilitar na hora da operacao do CamMin.
 * */
typedef struct ArestaStruct {
	struct VerticeStruct *destino;
	int custo;
	struct ArestaStruct* prox;
} Aresta;

/*
 * O Vertice tambem possui um campo chamado posicao.
 * Este campo tambem e utilizado pelo CamMin.
 * */
typedef struct VerticeStruct {
	int rotulo;
	int posicao;
	Aresta *headArestas;
	int size;
	struct VerticeStruct *prox;
} Vertice;

typedef struct GrafoStruct {
	Vertice *head;
	int size;
} Grafo;

#endif /* TYPES_H_ */
